开始之前:

1. 识别表情输出相关数据

在表情识别功能下,HUSKYLENS 2 能识别7种特定的表情:愤怒(ID为1)、厌恶(ID为2)、恐惧(ID为3)、开心(ID为4)、中性(ID为5)、悲伤(ID为6)和惊讶(ID为7)。以上表情已经在HUSKYLENS 2 出厂时学习完毕,无需用户再次手动学习,表情识别的详细功能使用说明请见二哈识图 2 表情识别功能说明

通过以下示例程序能统计当前HUSKYLENS 2 摄像头画面出识别出的所有表情的数量、输出指定表情的ID。

示例程序如下

#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from unihiker import GUI
from pinpong.board import Board
from dfrobot_huskylensv2 import *


u_gui=GUI()
Board().begin()
huskylens = HuskylensV2_I2C()
huskylens.knock()
huskylens.switchAlgorithm(ALGORITHM_EMOTION_RECOGNITION)
line1=u_gui.draw_text(text="",x=0,y=0,font_size=18, color="#0000FF")
line2=u_gui.draw_text(text="",x=0,y=40,font_size=18, color="#0000FF")
line3=u_gui.draw_text(text="",x=0,y=80,font_size=18, color="#0000FF")
while True:
    huskylens.getResult(ALGORITHM_EMOTION_RECOGNITION)
    if (huskylens.available(ALGORITHM_EMOTION_RECOGNITION)):
        line1.config(text=(str("表情总数:") + str((huskylens.getCachedResultNum(ALGORITHM_EMOTION_RECOGNITION)))))
        line2.config(text=(str("靠近中心的表情ID:") + str((huskylens.getCachedCenterResult(ALGORITHM_EMOTION_RECOGNITION).ID if huskylens.getCachedCenterResult(ALGORITHM_EMOTION_RECOGNITION) else -1))))
        line3.config(text=(str("第一个表情的ID:") + str((huskylens.getCachedResultByIndex(ALGORITHM_EMOTION_RECOGNITION, 1-1).ID if huskylens.getCachedResultByIndex(ALGORITHM_EMOTION_RECOGNITION, 1-1) else -1))))

在Mind+中点击运行程序

当任意以上七种表情出现在摄像头画面中,观察HUSKYLENS 2 的屏幕会将表情框出,显示表情ID、名称和置信度。同时,行空板K10屏幕上显示根据程序输出的结果数据。

运行结果如下:根据程序要求,输出了指定的表情ID、画面中表情总数。

Interface Diagram

2. 获取画面中指定表情的相关数据

当画面中出现多个相同ID的表情时,可以使用以下示例程序统计画面中的该ID表情的相关数据。

#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from unihiker import GUI
from pinpong.board import Board
from dfrobot_huskylensv2 import *


u_gui=GUI()
Board().begin()
huskylens = HuskylensV2_I2C()
huskylens.knock()
huskylens.switchAlgorithm(ALGORITHM_EMOTION_RECOGNITION)
line1=u_gui.draw_text(text="",x=0,y=0,font_size=18, color="#0000FF")
line2=u_gui.draw_text(text="",x=0,y=40,font_size=18, color="#0000FF")
line3=u_gui.draw_text(text="",x=0,y=80,font_size=18, color="#0000FF")
line4=u_gui.draw_text(text="",x=0,y=105,font_size=18, color="#0000FF")
while True:
    huskylens.getResult(ALGORITHM_EMOTION_RECOGNITION)
    if (huskylens.available(ALGORITHM_EMOTION_RECOGNITION)):
        if ((huskylens.getCachedResultByID(ALGORITHM_EMOTION_RECOGNITION, 4) is not None)):
            line1.config(text=(str("ID4表情总数:") + str((huskylens.getCachedResultNumByID(ALGORITHM_EMOTION_RECOGNITION, 4)))))
            line2.config(text=(str("ID4表情名称:") + str((huskylens.getCachedResultByID(ALGORITHM_EMOTION_RECOGNITION, 4).name if huskylens.getCachedResultByID(ALGORITHM_EMOTION_RECOGNITION, 4) else -1))))
            line3.config(text="第一个ID4表情")
            line4.config(text=(str("的坐标:") + str((str((huskylens.getCachedIndexResultByID(ALGORITHM_EMOTION_RECOGNITION, 4, 1-1).xCenter if huskylens.getCachedIndexResultByID(ALGORITHM_EMOTION_RECOGNITION, 4, 1-1) else -1)) + str((str(",") + str((huskylens.getCachedIndexResultByID(ALGORITHM_EMOTION_RECOGNITION, 4, 1-1).yCenter if huskylens.getCachedIndexResultByID(ALGORITHM_EMOTION_RECOGNITION, 4, 1-1) else -1))))))))


**运行结果:**如下,当画面中出现多个指定ID的表情时,可获取画面中该ID表情的总数、名称、该ID下某个指定表情的坐标等数据。

Interface Diagram